home *** CD-ROM | disk | FTP | other *** search
- * PROGRAM: FIELDSIZ.PRG
- * PURPOSE: Find the smallest size a character field can be
- * without losing any current data.
- *
- * REMARKS: You can call this program either from the dot prompt
- * or from inside another program.
- *
- * COMMAND: DO FIELDSIZ WITH 'FILENAME' (dBASE, FoxBASE+...)
- * OR FIELDSIZ FILENAME if compiled with Clipper
-
- PARAMETERS filename
- CLEAR
- SET TALK OFF
- SET STATUS OFF
- CLOSE DATABASES
- SELECT 1
- USE &filename
- ? "File: "+filename+".DBF"
- ? "Optimum structure:"
- ?
- msavtot=0
- maux=1
- DO WHILE LEN(FIELD(maux))>0
- IF TYPE(FIELD(maux))<>'C' && Check if the field is of Type "Char"
- maux=maux+1 && If not, goto next field
- LOOP
- ENDIF
- mtotal=0
- mname=FIELD(maux)
- GOTO TOP
- DO WHILE .NOT. EOF()
- IF LEN(TRIM(&mname))>mtotal
- mtotal=LEN(TRIM(&mname))
- ENDIF
- SKIP
- ENDDO
- msaved=(LEN(&mname)-mtotal)*RECCOUNT()
- msavtot=msavtot+msaved
- msg=IIF(msaved>0," bytes to save"," no change on this field")
- ? RIGHT(SPACE(10)+TRIM(FIELD(maux)),11),mtotal,STR(msaved)+msg
- maux=maux+1
- ENDDO
- ?
- ? "Total number of bytes that can be saved: " + LTRIM(STR(msavtot))
- CLOSE DATABASES
- RETURN